package com.tool.cn.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Properties;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.tool.cn.use.ObjectInit;

/**
 * 
 * @author wangzonghui
 * @date 2022年3月28日 上午9:30:32 
 * @Description properties配置文件工具类
 */
public final class ConfigUtil {
	
	private static final Logger log = LoggerFactory.getLogger(ConfigUtil.class);
	
	/**
	 * 全路径读取utf-8 编码解析配置文件
	 * @param path 绝对路径文件位置
	 * @return
	 */
	public  static Properties loadFile(String path){
		return LoadFile(path, "utf-8");
	}
	
	/**
	 * 全路径读取配置文件
	 * @param path 绝对路径文件路径
	 * @param encode 编码
	 * @return
	 */
	public static Properties LoadFile(String path,String encoded) {
		Properties per=new Properties();
		FileInputStream inputStream=null;
		try {
			inputStream = new FileInputStream(path);  
			if(StringUtil.isEmpty(encoded)) {
				per.load(inputStream);
				inputStream.close();
			}else {
				InputStreamReader input = new InputStreamReader(inputStream, encoded);
				per.load(input);
				input.close();
			}
			
		} catch(Exception e) {
			log.error("Deal FIle:"+path+" Error",e);
			return null;
		}finally{
			if(inputStream!=null){
				try {
					inputStream.close();
				} catch (IOException e) {
					log.error("close input stream failure:"+e);
				}
			}
		}
		return per;
	}
	
	/**
	 * 配合config 使用
	 * @param key
	 * @param data
	 * @return
	 */
	public static String checkDataPath(String key,String data) {
		if(StringUtil.isEmpty(data)) {
			log.error("{} Set {}  is Null",ObjectInit.properFile,key);
			System.exit(0);
		}
		
		if(!new File(data).exists()) {
			log.warn("{} Set {}  Path {} No Exist, Will Create",ObjectInit.properFile,key,data);
			FileUtil.checkAndMkdirPath(data);
		}
		return StringUtil.checkPath(data);
	}

}
